﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Transactions;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using SPMS.Common;
using SPMS.Data;
using SPMS.Web.Models;
using SPMS.Web.Mvc;


namespace SPMS.Web.Controllers
{
    [AuthorizeEx]
    public class FileTypeController : Controller
    {
        public ActionResult FileType()
        {
            return View();
        }

        [HttpPost]
        [JsonHandleError]
        public ActionResult Create(FileTypeModel model)
        {
            //创建上下文
            using (var context = new AccountFileManagementEntities())
            {
                //判断同名用户是否存在
                if (context.FileTypes.Any(item => item.FileType_Name == model.FileType_Name))
                {
                    //返回结果
                    return new JsonResultEx
                    (
                        new JsonResultViewModel()
                        {
                            success = false,
                            message = string.Format("名为'{0}'的文件类型已经存在，文件类型名不允许重复。<br/>请将文件类型名指定为其它名称。", model.FileType_Name)
                        },
                        JsonRequestBehavior.AllowGet
                    );
                }

                //创建实体
                FileType entity = new FileType();
                {
                    entity.FileType_ID = Guid.NewGuid();
                    entity.FileType_Name = model.FileType_Name;
                    entity.IsEnabled = model.IsEnabled;
                    entity.Validity = model.Validity;
                    entity.Memo = model.Memo;
                };

                context.FileTypes.Add(entity);
                context.SaveChanges();

                //返回结果
                return this.JsonEx(true, entity.FileType_ID);
            }
        }
        
        [HttpPost]
        [JsonHandleError]
        public ActionResult Delete(FileTypeModel model)
        {
            //判断模型是否有效
            if (null == model)
                return this.JsonEx(false, "无效的数据请求！");

            //创建上下文
            using (var context = new AccountFileManagementEntities())
            {
                //获得账户信息
                FileType entity = context.FileTypes.FirstOrDefault(item => item.FileType_ID == model.FileType_ID);

                //判断指定的账户是否存在
                if (null != entity)
                {
                    context.FileTypes.Remove(entity);
                    context.SaveChanges();
                }

                //返回结果
                return this.JsonEx();
            }
        }

        [HttpGet]
        [JsonHandleError]
        public ActionResult Detail(FileTypeQueryModel model)
        {
            //创建上下文
            using (var context = new AccountFileManagementEntities())
            {
                //查询数据
                var entity = context.FileTypes.FirstOrDefault(item => item.FileType_ID == model.FileType_ID);

                //判断是否有数据
                if (null == entity)
                    return this.JsonEx(false, string.Format("名为'{0}'的文件类型不存在。<br/>请确认此文件类型是否已经被删除。", model.FileType_Name));


                //创建数据
                var data = new
                {
                    entity.FileType_ID,
                    entity.FileType_Name,
                    entity.Validity,
                    entity.IsEnabled,
                    entity.Memo
                };

                //返回数据
                return this.JsonEx(true, data, 1);
            }
        }

        [HttpPost]
        [JsonHandleError]
        public ActionResult Update(FileTypeModel model)
        {
            //创建上下文
            using (var context = new AccountFileManagementEntities())
            {
                if (context.FileTypes.Any(item => item.FileType_Name == model.FileType_Name && item.FileType_ID != model.FileType_ID))
                    return this.JsonEx(false, string.Format("名为'{0}'的文件类型已经存在，文件类型名不允许重复。<br/>请将文件类型名指定为其它名称。", model.FileType_Name));

                var entity = context.FileTypes.FirstOrDefault(item => item.FileType_ID == model.FileType_ID);

                if (null == entity)
                    return this.JsonEx(false, string.Format("名为'{0}'的文件类型不存在，无法更新。<br/>请确认此文件类型是否已经被删除。", model.FileType_Name));

                if (null != entity)
                {
                    //更新实体
                    entity.FileType_Name = model.FileType_Name;
                    entity.IsEnabled = model.IsEnabled;
                    entity.Validity = model.Validity;
                    entity.Memo = model.Memo;
                    context.SaveChanges();
                }

                //返回结果
                return this.JsonEx();
            }
        }

        [HttpGet]
        [JsonHandleError]
        public JsonResult List(JsonPagingQueryModel queryModel)
        {
            //创建上下文
            using (var context = new AccountFileManagementEntities())
            {
                //用于保存总记录数
                int totalRecord = 0;

                //查询数据
                var query = from item in context.FileTypes.QueryData<FileType>(queryModel, out totalRecord)
                            select new
                            {
                                item.FileType_ID,
                                item.FileType_Name,
                                item.Validity,
                                item.IsEnabled,
                                item.Memo
                            };

                //获得数据
                var data = query.ToArray();

                return this.JsonEx(true, data, totalRecord);
            }
        }
    }
}
